<%

Function torneio_novo_torneio (conexao, nome, criterio, temporada, intervalo, id_tipo, aberto)

		str = "INSERT into torneios_geral "
		str = str & "(nome, criterio, temporada, intervalo, id_tipo, aberto) "
		str = str & "VALUES ('" & sql_cod(nome) &"', "
		str = str & "'" & criterio & "', "
		str = str & "'" & temporada & "', "		
		str = str & "'" & intervalo & "', "		
		str = str & "'" & id_tipo & "', "
		str = str & "'" & aberto & "')"						
		Set rsI = conexao.Execute(str)

		str = "Select id FROM torneios_geral order by id desc LIMIT 1"
    	Set rs = conexao.Execute(str)	

		torneio_novo_torneio = rs("id")

End Function

Function torneio_novo_torneio_completo (conexao, nome, temporada, id_tipo)

		str = "Select * FROM torneios_tipos where id="&id_tipo
    	Set rsNT = conexao.Execute(str)	
			
		If nome<>"" AND IsNumero(temporada) AND not rsNT.eof then	
		
			DIM clubest(), indice(), g_clubes(), total
			ReDIM clubest(MAX_Usuarios,1), indice(MAX_Usuarios), g_clubes(MAX_Usuarios)
			DIM id_tor, liga, i, j, k		
			DIM max_clubes
			
			liga = rsNT("liga")
			
			str = "Select id_clube, valor FROM clubes_tipos WHERE liga="&liga&" AND valor="&rsNT("liga_divisao")
			Set rsC = conexao.Execute(str)	
			
			total = 0
			
			DO while not rsC.eof
			
				clubest(total,0) = rsC("id_clube")
				clubest(total,1) = ranking_get_posicao(conexao, clubest(total,0), temporada)
				
				If clubest(total,1)=0 then clubest(total,1) = MAX_Usuarios + clubest(total,0)
				
				total=total+1
			
			rsC.MoveNext
			Loop		
			
			ordenar clubest, indice, 0, total, 1				
		
			max_clubes = int(rsNT("max_clubes"))	
			
			If 	max_clubes=0 OR max_clubes=total then
				
				id_tor = torneio_novo_torneio (conexao, nome, rsNT("id_criterio"), temporada, rsNT("rodadas_intervalo"), id_tipo, rsNT("aberto"))						
				
				DIM bots, clu_p_grup, erro
				
				erro = false
				bots = 0
				clu_p_grup = int(rsNT("clubes_por_grupo"))
				
				If clu_p_grup >0 AND max_clubes > 0 AND total > clu_p_grup*max_clubes then
				
					erro = true
					
				End IF
				
				If erro = false then
				
					If clu_p_grup >0 AND max_clubes > 0 then bots = max_clubes - total
					If clu_p_grup >0 AND max_clubes = 0 then 
						bots = clu_p_grupo - total mod clu_p_grupo
						If bots = clu_p_grupo then bots = 0
					End If
				
					for i = 1 to bots
					
						clubest(total,0) = (-1)*i
						clubest(total,1) = 0
						total = total + 1
					
					Next
					
								
				
					DIM id_grupo, n_grupos, g_nome, g_nomep, total_clu_p_gru, rebaixamento, meio, acesso, fase_2,fase_final
					
					acesso = rsNT("acesso")
					rebaixamento = rsNT("rebaixamento")
					fase_2 =  int(rsNT("fase_2"))
					fase_final =  int(rsNT("final"))
					
					n_grupos = 1
					If  clu_p_grup > 0 then n_grupos = total / clu_p_grup
					
					total_clu_p_gru = total / n_grupos
	
					If rsNT("tipo")= 1 then g_nomep = "Grupo "
					If rsNT("tipo")= 2 then g_nomep = "Chave "
					If n_grupos =  1  then g_nomep = nome
					
					DIM rodadas_restantes
					
					rodadas_restantes = 100
					If rsNT("rodadas")>0 then rodadas_restantes = rsNT("rodadas") - ((total_clu_p_gru-1) + (total_clu_p_gru mod 2))	* rsNT("turnos")				
					
					rebaixamento = int(rebaixamento/n_grupos)
					acesso = rsNT("fase_2")
					meio = 4
					If rodadas_restantes<4 then meio = 2
					If n_grupos = 1 OR rsNT("acesso")=0 or rsNT("acesso")<=acesso then meio = 0
					
					For i = 1 to n_grupos
	
						num = i
					
						g_nome = g_nomep
						If n_grupos>1 then g_nome=g_nomep+UCase(Letra(num))
						
						k=0
						For j=0 to total-1 step n_grupos
						
							g_clubes(k) = clubest(indice(j+i-1),0)
							k=k+1
						Next
						
						'torneio_novo_grupo (conexao, nome, id_torneio, fase, nivel, anterior, posicao, criterio, tipo, clubes, total_clubes, turnos)
						id_grupo = torneio_novo_grupo (conexao, g_nome, id_tor, 1, 1, 0, i, rsNT("id_criterio"), rsNT("tipo"), g_clubes, total_clu_p_gru, rsNT("turnos"))
						
						torneio_grupo_acesso conexao, id_grupo, acesso
						torneio_grupo_meio conexao, id_grupo, meio
						torneio_grupo_rebaixamento conexao, id_grupo, rebaixamento
					
					next
	
					
					acesso = rsNT("acesso")
					
					If n_grupos>1 then
					
						'n_grupos
						'acesso
						'rodadas_restantes
						
						DIM numero_finalistas, tot_fin_turnos
						
						numero_finalistas = n_grupos*fase_2
						
						If fase_final = 2 then	
	
							If rodadas_restantes<100 then
								If 	2^rodadas_restantes < numero_finalistas then
								
									numero_finalistas = 2^rodadas_restantes
													
								End If	
							End If	
							
							tot_fin_turnos	= 1
							
							If 	(2^rodadas_restantes) >= 2*numero_finalistas then tot_fin_turnos = 2
							
						Else
						
							fase_final = 1
							
							If 	rodadas_restantes < numero_finalistas -1 + (numero_finalistas mod 2) then
							
								numero_finalistas = rodadas_restantes
												
							End If	
							
							tot_fin_turnos	= 1				
							
						End If						
						
						
						'acesso
						
						If numero_finalistas > acesso AND acesso>0 then 
						
							numero_finalistas = acesso
							
						End if					
						
						'clubes -
						
						For i=0 to 	numero_finalistas-1
						
							g_clubes(i) = (i+1)*(-1)
						
						Next					
						
	
						'torneio_novo_grupo (conexao, nome, id_torneio, fase, nivel, anterior, posicao, criterio, tipo, clubes, total_clubes, turnos)
						id_grupo = torneio_novo_grupo (conexao, "Final", id_tor, 2, 2, 1, 1, rsNT("id_criterio"), fase_final, g_clubes, numero_finalistas, tot_fin_turnos)
						
						acesso = (acesso - numero_finalistas)/n_grupos
						
						If acesso>0 then
						
							DIM tot_ace_clubes, tot_ace_turnos
						
							tot_ace_clubes = 4
							tot_ace_turnos = 1 
							
							If rodadas_restantes<4 then 
								tot_ace_clubes = 2
								tot_ace_turnos = rodadas_restantes
							End If
						
							For i=0 to 	tot_ace_clubes-1
							
								g_clubes(i) = (i+1)*(-1)
							
							Next					
						
							For i = 1 to n_grupos
							
								num = i
							
								g_nomep="Acesso "&UCase(Letra(num))
							
								'torneio_novo_grupo (conexao, nome, id_torneio, fase, nivel, anterior, posicao, criterio, tipo, clubes, total_clubes, turnos)
								id_grupo = torneio_novo_grupo (conexao, g_nomep, id_tor, 2, 1, 1, i, rsNT("id_criterio"), 1, g_clubes, tot_ace_clubes, tot_ace_turnos)
								
								torneio_grupo_acesso conexao, id_grupo, acesso
							
							Next
						
						End If
							
						
					
					End If
					
				Else
				
					torneio_excluir conexao, id_tor
				
				End If
				
			End If
		
		End If

End Function

%>
